 ¥í¥°¥¤¥ó
 ¥á¥¤¥ó¥á¥Ë¥å¡¼
|
| Åê¹Æ¼Ô |
¥¹¥ì¥Ã¥É |
| SeeDa!! |
Åê¹ÆNo.41288 Åê¹ÆÆü»þ: 2009-1-23 1:26 |
¿¦¿Í   µï½»ÃÏ: Nagoya Åê¹Æ: 221
»ÈÍѴĶ: WinXP  Flash CS4  au:W33SA¶
|
3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï CS4¤ò¼ê¤ËÆþ¤ì¤ÆAS3.0¤ò¿¨¤ê»Ï¤á¤Þ¤·¤¿¡£ ´Êñ¤Ê¥³¡¼¥É¤Ç²èÁü¤òŽ¤Ã¤¿Î©ÊýÂΤò3D(Æ©»ëÅê±Æ)¤Ç²óž¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Æ¶Ã¤¤¤Æ¤Þ¤¹¡ª Àµ¤·¤¤ºîË¡¤È¤Ï¤Û¤É±ó¤¤²¼µ¤Î¥³¡¼¥É¤ò¥Õ¥ì¡¼¥à¤Ë½ñ¤¤¤Æ²¿¤È¤«¤½¤ì¤Ã¤Ý¤¯²óž¤·¤Æ¤Þ¤¹¤¬¡¢´¶³ÐŪ¤Ë¤Á¤ç¤Ã¤ÈÊÑ¤ÊÆ°¤¤Ç¤¹¡£ ΩÊýÂΤα¦¤Ø¥«¡¼¥½¥ë¤ò»ý¤Ã¤Æ¤¤¤¯¤È±¦¡¢²¼¤Ø»ý¤Ã¤Æ¤¤¤¯¤È²¼¡Ä¤È¤¤¤¦¤Î¤¬¾¯¤·¤º¤ì¤ë¤·¡¢¼Ð¤áÊý¸þ¤Ï¤Æ¤ó¤ÇÏäˤʤê¤Þ¤»¤ó¡£ X,Y¼´¤Î²óž¤À¤±¤Çɽ¸½¤·¤Æ¤Þ¤¹¤¬Z¼´²óž¤ò¤¦¤Þ¤¯ÍøÍѤ¹¤ì¤Ð¤è¤¤¤Î¤«¡¢¥Ù¥¯¥¿¡¼¤òÊØÍø¤Ë»È¤¨¤ë¤Î¤«¡¢Éßµï¤Î¹â¤½¤¦¤Êmatrix¤Ë¼ê¤ò½Ð¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤«¡Ä¡¢²¿¤«½õ¸À¤ò¤¤¤¿¤À¤±¤ë¤È½õ¤«¤ê¤Þ¤¹¡£ /*
* ΩÊýÂΤò¥Þ¥¦¥¹¤ËÈ¿±þ¤µ¤»¤Æ²óž¤µ¤»¤ë¥µ¥ó¥×¥ë
* ³ÆÌ̤δð½àÅÀ¤ÏÃæ¿´¤ËÀßÄꤷ¤Æ¥é¥¤¥Ö¥é¥ê¤ËÅÐÏ¿¤·¤Æ¤ª¤¯
* £¶Ì̤òrect1¡Árect6¤È¤·¤Æ¤ª¤¡¢¤½¤Î¤Þ¤Þ¥¹¥¯¥ê¥×¥ÈÍѤ˽ñ¤½Ð¤¹
*/
// ΩÊýÂΤÎ1ÊÕ¤ÎŤµ
var nearLen:Number = 100;
// ΩÊýÂΤò²èÌ̤Υ»¥ó¥¿¡¼¤ËÇÛÃÖ
var cube:MovieClip = new MovieClip();
addChild(cube);
cube.x = stage.stageWidth/2;
cube.y = stage.stageHeight/2;
// ¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤ë²èÁü(MC)¤Î°ÌÃÖÀßÄê
var face1:MovieClip = new rect1();
face1.z = -nearLen/2;
var face2:MovieClip = new rect2();
face2.z = nearLen/2;
face2.rotationY = 180;
var face3:MovieClip = new rect3();
face3.x = -nearLen/2;
face3.rotationY = 90;
var face4:MovieClip = new rect4();
face4.x = nearLen/2;
face4.rotationY = 270;
var face5:MovieClip = new rect5();
face5.y = -nearLen/2;
face5.rotationX = -90;
var face6:MovieClip = new rect6();
face6.y = nearLen/2;
face6.rotationX = 90;
// ³ÆÌ̤òÇÛÎó¤Ë³ÊǼ
var faces:Array = new Array(face1, face2, face3, face4, face5, face6);
// ΩÊýÂΤò²óž
stage.addEventListener(Event.ENTER_FRAME, rotationCube);
function rotationCube(e:Event) {
// ¥Þ¥¦¥¹°ÌÃÖ¤«¤é²óž¥¹¥Ô¡¼¥É¤ò·èÄê
var dx:Number = stage.mouseX - cube.x;
var dy:Number = stage.mouseY - cube.y;
cube.rotationY -= dx / 9;
cube.rotationX += dy / 9;
// ͽ¤á³ÆÌ̤òŽ¤Ã¤Æ¤½¤ÎZºÂɸ¤òÆÀ¤ë
for (var ind:uint = 0; ind < faces.length; ind++) {
cube.addChild(faces[ind]);
}
// ¥°¥í¡¼¥Ð¥ë¤ÊzºÂɸ¤òÆÀ¤ë
for (ind=0; ind < faces.length; ind++) {
faces[ind].pz = faces[ind].transform.getRelativeMatrix3D(root).position.z;
cube.removeChild(faces[ind]);
}
// zºÂɸ¤¬Î©ÊýÂΤè¤êÁ°Ì̤ˤ¢¤ëÌ̤À¤±¤òÉÁ²è
faces.sortOn("pz", Array.NUMERIC | Array.DESCENDING);
for (ind=0; ind < faces.length; ind++) {
if (faces[ind].pz < cube.z) {
cube.addChild(faces[ind]);
}
}
}
²áµî¤ËAS2.0¤Ç¥´¥ê¥´¥ê½ñ¤¤¤¿¤â¤Î¤Ï»×¤¤Ä̤ê¤Ë²óž¤·¤¿¤ó¤À¤±¤É¤Ê¤¡  º£²ó¤Î¤Ïºî¤ê¤¬´Êñ¤¹¤®µÑ¤Ã¤Æ¼ê¤³¤º¤Ã¤Æ¤Þ¤¹¡£¤Ã¤Æ¤¤¤¦¤«¡¢¤¤Ã¤È´Êñ¤ÊÊýË¡¤¬¤¢¤ë¤ó¤¸¤ã¤Ê¤¤¤«¤È
|
|
|
| ÌîÃæÊ¸Íº |
Åê¹ÆNo.41289 Åê¹ÆÆü»þ: 2009-1-23 3:11 |
¤Á¤ç¤ó¤Þ¤²¤é   µï½»ÃÏ: Åìµþ Åê¹Æ: 4247
»ÈÍѴĶ: CS4  .4.11  Vista Home Premium (SP1)
|
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï ¥¤¥ó¥¹¥¿¥ó¥¹¤Î¥Ç¥Õ¥©¥ë¥È(½é´ü)¾õÂÖ¤òµ¯ÅÀ¤Ë¡¢²óž¤¬²Ã¤ï¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£ »²¹Í:¡Ö Matrix3D¥¯¥é¥¹ ¡Ý ÊÑ´¹¹ÔÎó2¡×(¤È¤¯¤Ë02¡ÖÊÑ´¹¹ÔÎó¤òŬÍѤ¹¤ë½ç½ø¡×°Ê¹ß)¡¢¡Ö ÊÑ´¹¹ÔÎó¤ò¿ô³ØÅª¤Ëª¤¨¤ë¡×(¤È¤¯¤Ë3¡Ö Matrix3D¥¯¥é¥¹¤Ë¤ª¤±¤ëÊÑ´¹¹ÔÎó¤Î°·¤¤¡×) °úÍÑ¡§ SeeDa¤µ¤ó¤Ï½ñ¤¤Þ¤·¤¿¡§ ΩÊýÂΤα¦¤Ø¥«¡¼¥½¥ë¤ò»ý¤Ã¤Æ¤¤¤¯¤È±¦¡¢²¼¤Ø»ý¤Ã¤Æ¤¤¤¯¤È²¼¡Ä¤È¤¤¤¦¤Î¤¬¾¯¤·¤º¤ì¤ë¤·¡¢¼Ð¤áÊý¸þ¤Ï¤Æ¤ó¤ÇÏäˤʤê¤Þ¤»¤ó¡£
X,Y¼´¤Î²óž¤À¤±¤Çɽ¸½¤·¤Æ¤Þ¤¹¤¬Z¼´²óž¤ò¤¦¤Þ¤¯ÍøÍѤ¹¤ì¤Ð¤è¤¤¤Î¤«¡¢¥Ù¥¯¥¿¡¼¤òÊØÍø¤Ë»È¤¨¤ë¤Î¤«¡¢Éßµï¤Î¹â¤½¤¦¤Êmatrix¤Ë¼ê¤ò½Ð¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤«¡Ä¡¢²¿¤«½õ¸À¤ò¤¤¤¿¤À¤±¤ë¤È½õ¤«¤ê¤Þ¤¹¡£ ----------------
¡¡
|
|
|
| ÌîÃæÊ¸Íº |
Åê¹ÆNo.41290 Åê¹ÆÆü»þ: 2009-1-23 4:08 |
¤Á¤ç¤ó¤Þ¤²¤é   µï½»ÃÏ: Åìµþ Åê¹Æ: 4247
»ÈÍѴĶ: CS4  .4.11  Vista Home Premium (SP1)
|
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï °Ê²¼¤Î½¤Àµ¤ò²Ã¤¨¤ë¤È¡¢¤¤¤«¤¬¤Ç¤·¤ç¤¦¤«¡£ °úÍÑ¡§ SeeDa¤µ¤ó¤Ï½ñ¤¤Þ¤·¤¿¡§ ΩÊýÂΤα¦¤Ø¥«¡¼¥½¥ë¤ò»ý¤Ã¤Æ¤¤¤¯¤È±¦¡¢²¼¤Ø»ý¤Ã¤Æ¤¤¤¯¤È²¼¡Ä¤È¤¤¤¦¤Î¤¬¾¯¤·¤º¤ì¤ë¤·¡¢¼Ð¤áÊý¸þ¤Ï¤Æ¤ó¤ÇÏäˤʤê¤Þ¤»¤ó¡£ ...[ÃæÎ¬]...
/*
* ΩÊýÂΤò¥Þ¥¦¥¹¤ËÈ¿±þ¤µ¤»¤Æ²óž¤µ¤»¤ë¥µ¥ó¥×¥ë
* ³ÆÌ̤δð½àÅÀ¤ÏÃæ¿´¤ËÀßÄꤷ¤Æ¥é¥¤¥Ö¥é¥ê¤ËÅÐÏ¿¤·¤Æ¤ª¤¯
* £¶Ì̤òrect1¡Árect6¤È¤·¤Æ¤ª¤¡¢¤½¤Î¤Þ¤Þ¥¹¥¯¥ê¥×¥ÈÍѤ˽ñ¤½Ð¤¹
*/
// ΩÊýÂΤÎ1ÊÕ¤ÎŤµ
var nearLen:Number = 100;
// ΩÊýÂΤò²èÌ̤Υ»¥ó¥¿¡¼¤ËÇÛÃÖ
var cube:MovieClip = new MovieClip();
addChild(cube);
cube.x = stage.stageWidth/2;
cube.y = stage.stageHeight/2;
cube.z = 0;
// ¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤ë²èÁü(MC)¤Î°ÌÃÖÀßÄê
var face1:MovieClip = new rect1();
face1.z = -nearLen/2;
var face2:MovieClip = new rect2();
face2.z = nearLen/2;
face2.rotationY = 180;
var face3:MovieClip = new rect3();
face3.x = -nearLen/2;
face3.rotationY = 90;
var face4:MovieClip = new rect4();
face4.x = nearLen/2;
face4.rotationY = 270;
var face5:MovieClip = new rect5();
face5.y = -nearLen/2;
face5.rotationX = -90;
var face6:MovieClip = new rect6();
face6.y = nearLen/2;
face6.rotationX = 90;
// ³ÆÌ̤òÇÛÎó¤Ë³ÊǼ
var faces:Array = new Array(face1, face2, face3, face4, face5, face6);
// ΩÊýÂΤò²óž
stage.addEventListener(Event.ENTER_FRAME, rotationCube);
function rotationCube(e:Event) {
// ¥Þ¥¦¥¹°ÌÃÖ¤«¤é²óž¥¹¥Ô¡¼¥É¤ò·èÄê
var dx:Number = stage.mouseX - cube.x;
var dy:Number = stage.mouseY - cube.y;
// cube.rotationY -= dx / 9;
// cube.rotationX += dy / 9;
var nX:Number = cube.x;
var nY:Number = cube.y;
cube.transform.matrix3D.appendTranslation(-nX, -nY, 0);
cube.transform.matrix3D.appendRotation(-dx/9, Vector3D.Y_AXIS);
cube.transform.matrix3D.appendRotation(dy/9, Vector3D.X_AXIS);
cube.transform.matrix3D.appendTranslation(nX, nY, 0);
// ͽ¤á³ÆÌ̤òŽ¤Ã¤Æ¤½¤ÎZºÂɸ¤òÆÀ¤ë
for (var ind:uint = 0; ind < faces.length; ind++) {
cube.addChild(faces[ind]);
}
// ¥°¥í¡¼¥Ð¥ë¤ÊzºÂɸ¤òÆÀ¤ë
for (ind=0; ind < faces.length; ind++) {
faces[ind].pz = faces[ind].transform.getRelativeMatrix3D(root).position.z;
cube.removeChild(faces[ind]);
}
// zºÂɸ¤¬Î©ÊýÂΤè¤êÁ°Ì̤ˤ¢¤ëÌ̤À¤±¤òÉÁ²è
faces.sortOn("pz", Array.NUMERIC | Array.DESCENDING);
for (ind=0; ind < faces.length; ind++) {
if (faces[ind].pz < cube.z) {
cube.addChild(faces[ind]);
}
}
}
----------------
¡¡
|
|
|
| SeeDa!! |
Åê¹ÆNo.41291 Åê¹ÆÆü»þ: 2009-1-23 5:27 |
¿¦¿Í   µï½»ÃÏ: Nagoya Åê¹Æ: 221
»ÈÍѴĶ: WinXP  Flash CS4  au:W33SA¶
|
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï ¤Þ¤µ¤Ëõ¤·¤Æ¤¤¤¿²óÅú¤ò¤¤¤¿¤À¤¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£ ¤ª±¢¤Ç¤È¤Æ¤âµ¤»ý¤Á¤è¤¤Æ°¤¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¤³¤ì¤ò¸µ¤Ë¿§¡¹¤ÈȯŸ¤Ç¤¤½¤¦¤Ç¤¹¡£ źºï¤·¤Æ¤¤¤¿¤À¤¤¤¿¥¹¥¯¥ê¥×¥È¤È¡¢¤´Ä󼨤¤¤¿¤À¤¤¤¿Matrix3D¥¯¥é¥¹¤Îµ»ö¤ò»²¹Í¤Ë¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤È¤³¤í¡¢ cube.z = 0;¤òÈ´¤«¤·¤¿¤¿¤á¤Ë¥¨¥é¡¼¤Ë¤Ê¤Ã¤¿¤Î¤È¡¢Y¼´²óž¤¬¥«¡¼¥½¥ë¤Î¸þ¤¤ÈµÕ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤ÇÀÖ»úÉôʬ¤ò½¤Àµ¤·¤Þ¤·¤¿¡£Ì̤ÎÇÛÃÖÊýË¡¤ËÌäÂ꤬¤¢¤Ã¤¿¤Î¤«¤Ê¡© Matrix3D¥¯¥é¥¹¤ÏActionScript3.0 ¥×¥í¥Õ¥§¥Ã¥·¥ç¥Ê¥ë¥¬¥¤¥É¤ËºÜ¤Ã¤Æ¤Þ¤»¤ó¤è¤Í¡© ¤â¤Ã¤È¤â61/640p¤Þ¤Ç¤·¤«ÆÉ¤ß¿Ê¤ó¤Ç¤¤¤Þ¤»¤ó¤¬  CS4¤Ç¤Î3D¥¹¥´¥¤¤Ç¤¹¡£triangle¤ä¤évector¤ä¤é¡¢¥ª¥Á¥ª¥Á¿²¤Æ¤¤¤é¤ì¤Þ¤»¤ó¡£ /*
* ΩÊýÂΤò¥Þ¥¦¥¹¤ËÈ¿±þ¤µ¤»¤Æ²óž¤µ¤»¤ë¥µ¥ó¥×¥ë
* ³ÆÌ̤δð½àÅÀ¤ÏÃæ¿´¤ËÀßÄꤷ¤Æ¥é¥¤¥Ö¥é¥ê¤ËÅÐÏ¿¤·¤Æ¤ª¤¯
* £¶Ì̤òrect1¡Árect6¤È¤·¤Æ¤ª¤¡¢¤½¤Î¤Þ¤Þ¥¹¥¯¥ê¥×¥ÈÍѤ˽ñ¤½Ð¤¹
*/
// ΩÊýÂΤÎ1ÊÕ¤ÎŤµ
var nearLen:Number = 100;
// ΩÊýÂΤò²èÌ̤Υ»¥ó¥¿¡¼¤ËÇÛÃÖ
var cube:MovieClip = new MovieClip();
addChild(cube);
cube.x = stage.stageWidth/2;
cube.y = stage.stageHeight/2;
// ¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤ë²èÁü¤Î°ÌÃÖÀßÄê
var face1:MovieClip = new rect1();
face1.z = -nearLen/2;
var face2:MovieClip = new rect2();
face2.z = nearLen/2;
face2.rotationY = 180;
var face3:MovieClip = new rect3();
face3.x = -nearLen/2;
face3.rotationY = 90;
var face4:MovieClip = new rect4();
face4.x = nearLen/2;
face4.rotationY = 270;
var face5:MovieClip = new rect5();
face5.y = -nearLen/2;
face5.rotationX = -90;
var face6:MovieClip = new rect6();
face6.y = nearLen/2;
face6.rotationX = 90;
// ³ÆÌ̤òÇÛÎó¤Ë³ÊǼ
var faces:Array = new Array(face1, face2, face3, face4, face5, face6);
// ΩÊýÂΤò¥Þ¥¦¥¹°ÌÃÖ¤ò¤â¤È¤Ë²óž
stage.addEventListener(Event.ENTER_FRAME, rotationCube);
var nX:Number = cube.x;
var nY:Number = cube.y;
var nDeceleration:Number = 0.3;
cube.z = 0;
function rotationCube(e:Event):void {
var nRotationY:Number = (nX - mouseX) * nDeceleration;
var nRotationX:Number = (mouseY - nY) * nDeceleration;
cube.transform.matrix3D.appendTranslation(-nX, -nY, 0);
cube.transform.matrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
cube.transform.matrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
cube.transform.matrix3D.appendTranslation(nX, nY, 0);
// ZºÂɸ¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë³ÆÌ̤òÇÛÃÖ
for (var ind:uint = 0; ind < faces.length; ind++) {
cube.addChild(faces[ind]);
}
// ³ÆÌ̤Υ°¥í¡¼¥Ð¥ë¤ÊzºÂɸ¤ò¼èÆÀ
for (ind=0; ind < faces.length; ind++) {
faces[ind].pz = faces[ind].transform.getRelativeMatrix3D(root).position.z;
cube.removeChild(faces[ind]);
}
// zºÂɸ¤¬Î©ÊýÂΤè¤êÁ°Ì̤ˤ¢¤ëÌ̤À¤±¤òÉÁ²è
faces.sortOn("pz", Array.NUMERIC | Array.DESCENDING);
for (ind=0; ind < faces.length; ind++) {
if (faces[ind].pz < cube.z) {
cube.addChild(faces[ind]);
}
}
}
|
|
|
| ÌîÃæÊ¸Íº |
Åê¹ÆNo.41293 Åê¹ÆÆü»þ: 2009-1-23 13:46 |
¤Á¤ç¤ó¤Þ¤²¤é   µï½»ÃÏ: Åìµþ Åê¹Æ: 4247
»ÈÍѴĶ: CS4  .4.11  Vista Home Premium (SP1)
|
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï Matrix3D¥¯¥é¥¹¤Ï¡¢Flash Player 10¤Î¼ÂÁõ¤Ç¤¹¤Î¤Ç¡¢¼ýÏ¿¤Ë¤Ï´Ö¤Ë¹ç¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£¶ñÂÎŪ¤ËÆüÄø¤Ï·è¤Þ¤Ã¤Æ¤¤¤Þ¤»¤ó¤±¤É¡¢¤Ä¤®¤Ë²þÄû¤¹¤ë¤È¤¤Ï²òÀâ¤Ë´Þ¤á¡¢¹ÔÎó¤Î¿ô³ØÅª¤ÊÀâÌÀ¤â¤«¤Ê¤êÊ䤦¤Ä¤â¤ê¤Ç¤¹¡£ °úÍÑ¡§ SeeDa¤µ¤ó¤Ï½ñ¤¤Þ¤·¤¿¡§ Matrix3D¥¯¥é¥¹¤ÏActionScript3.0 ¥×¥í¥Õ¥§¥Ã¥·¥ç¥Ê¥ë¥¬¥¤¥É¤ËºÜ¤Ã¤Æ¤Þ¤»¤ó¤è¤Í¡© ¤½¤ì¤À¤±¤Ç¤Ï²¿¤Ç¤¹¤Î¤Ç¡¢·ÇºÜ¤¤¤¿¤À¤¤¤¿¥¹¥¯¥ê¥×¥È¤Î´Ø¿ôrotationCube()¤Ë¾¯¤·¥Á¥å¡¼¥Ë¥ó¥°¤ò²Ã¤¨¤Æ¤ß¤Þ¤·¤¿¡£¼Â¬¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢Â¿¾¯¸úΨ¤¬¾å¤¬¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£ function rotationCube(e:Event):void {
var nRotationY:Number = (nX - mouseX) * nDeceleration;
var nRotationX:Number = (mouseY - nY) * nDeceleration;
var myMatrix3D:Matrix3D = cube.transform.matrix3D;
myMatrix3D.appendTranslation(-nX, -nY, 0);
myMatrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
myMatrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
myMatrix3D.appendTranslation(nX, nY, 0);
cube.transform.matrix3D = myMatrix3D;
// ZºÂɸ¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë³ÆÌ̤òÇÛÃÖ
for (var ind:uint = 0; ind < faces.length; ind++) {
cube.addChild(faces[ind]);
}
var face_mc:MovieClip;
// ³ÆÌ̤Υ°¥í¡¼¥Ð¥ë¤ÊzºÂɸ¤ò¼èÆÀ
for (ind=0; ind < faces.length; ind++) {
face_mc = faces[ind] as MovieClip;
// faces[ind].pz = aces[ind].transform.getRelativeMatrix3D(root).position.z;
face_mc.pz = face_mc.transform.getRelativeMatrix3D(root).position.z;
// cube.removeChild(faces[ind]);
}
// zºÂɸ¤¬Î©ÊýÂΤè¤êÁ°Ì̤ˤ¢¤ëÌ̤À¤±¤òÉÁ²è
faces.sortOn("pz", Array.NUMERIC | Array.DESCENDING);
for (ind=0; ind < faces.length; ind++) {
face_mc = faces[ind] as MovieClip;
// if (faces[ind].pz < cube.z) {
if (face_mc.pz < cube.z) {
// cube.addChild(faces[ind]);
face_mc.visible = true;
} else {
face_mc.visible = false;
}
}
}
----------------
¡¡
|
|
|
| SeeDa!! |
Åê¹ÆNo.41298 Åê¹ÆÆü»þ: 2009-1-23 15:45 |
¿¦¿Í   µï½»ÃÏ: Nagoya Åê¹Æ: 221
»ÈÍѴĶ: WinXP  Flash CS4  au:W33SA¶
|
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï ÂÔ¤Á±ó¤·¤¤¸Â¤ê¤Ç¤¹¡£ // ¤µ¤é¤Ë½Å¤¯¤Ê¤ë¤ÈÏÓ¤âÃ䨤é¤ì¤½¤¦  °úÍÑ¡§ Fumio¤µ¤ó¤Ï½ñ¤¤Þ¤·¤¿¡§ Matrix3D¥¯¥é¥¹¤Ï¡¢Flash Player 10¤Î¼ÂÁõ¤Ç¤¹¤Î¤Ç¡¢¼ýÏ¿¤Ë¤Ï´Ö¤Ë¹ç¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£¶ñÂÎŪ¤ËÆüÄø¤Ï·è¤Þ¤Ã¤Æ¤¤¤Þ¤»¤ó¤±¤É¡¢¤Ä¤®¤Ë²þÄû¤¹¤ë¤È¤¤Ï²òÀâ¤Ë´Þ¤á¡¢¹ÔÎó¤Î¿ô³ØÅª¤ÊÀâÌÀ¤â¤«¤Ê¤êÊ䤦¤Ä¤â¤ê¤Ç¤¹¡£ ¤¤¤¨¤¤¤¨¡¢¤â¤¦½½Ê¬¤ªÊ¢¤¤¤Ã¤Ñ¤¤¤Ç¤¹¡£ visible¤ò»È¤Ã¤¿Êý¤¬·Ú¤¯¤Ê¤ë¤Î¤Ï°Õ³°¤Êµ¤¤¬¤·¤Þ¤¹¡£ °úÍÑ¡§ ¤½¤ì¤À¤±¤Ç¤Ï²¿¤Ç¤¹¤Î¤Ç¡¢·ÇºÜ¤¤¤¿¤À¤¤¤¿¥¹¥¯¥ê¥×¥È¤Î´Ø¿ôrotationCube()¤Ë¾¯¤·¥Á¥å¡¼¥Ë¥ó¥°¤ò²Ã¤¨¤Æ¤ß¤Þ¤·¤¿¡£¼Â¬¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢Â¿¾¯¸úΨ¤¬¾å¤¬¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£
// ¥¶¥Ã¥¯¥êά
if (face_mc.pz < cube.z) {
// cube.addChild(faces[ind]);
face_mc.visible = true;
} else {
face_mc.visible = false;
}
|
|
|
| ÌîÃæÊ¸Íº |
Åê¹ÆNo.41390 Åê¹ÆÆü»þ: 2009-2-3 22:01 |
¤Á¤ç¤ó¤Þ¤²¤é   µï½»ÃÏ: Åìµþ Åê¹Æ: 4247
»ÈÍѴĶ: CS4  .4.11  Vista Home Premium (SP1)
|
Re: 3D¤ÎΩÊýÂΤòÀµ³Î¤Ë²óž¤µ¤»¤ë¤Ë¤Ï MAX¤Î¤ª¤Þ¤±¥Í¥¿¤ËΩÊýÂΤβóž¤ò¤Ä¤¯¤Ã¤¿¤Î¤Ç¡¢¤´»²¹Í¤Þ¤Ç¤Ë ¸ø³«¤·¤Þ¤¹¡£[¥é¥¤¥Ö¥é¥ê]¤Ë¤Ï100¥Ô¥¯¥»¥ë»ÍÊý¤Î6Ëç¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤òǼ¤á¡¢[¥¯¥é¥¹]¤È¤·¤ÆImage0¡ÁImage5¤òÀßÄꤷ¤Æ¤ª¤¤Þ¤¹¡£ // ¥á¥¤¥ó¥¿¥¤¥à¥é¥¤¥ó: ¥Õ¥ì¡¼¥à¥¢¥¯¥·¥ç¥ó
var nX:Number = stage.stageWidth / 2;
var nY:Number = stage.stageHeight / 2;
var nSensitivity:Number = 0.2;
var nUnit:Number = 100 / 2;
var images_vector:Vector.<Array> = new Vector.<Array>();
var faces_vector:Vector.<Sprite> = new Vector.<Sprite>();
var cubeSprite:Sprite = new Sprite();
images_vector.push([Image0, new Vector3D(0, 0, -nUnit)]);
images_vector.push([Image1, new Vector3D(0, -nUnit, 0), ["rotationX", 90]]);
images_vector.push([Image2, new Vector3D(0, nUnit, 0), ["rotationX", -90]]);
images_vector.push([Image3, new Vector3D(nUnit, 0, 0), ["rotationY", 90]]);
images_vector.push([Image4, new Vector3D(-nUnit, 0, 0), ["rotationY", -90]]);
images_vector.push([Image5, new Vector3D(0, 0, nUnit), ["rotationX", 180]]);
initializeCube();
function initializeCube():void {
var nLength:Number = images_vector.length;
addChild(cubeSprite);
cubeSprite.x = nX;
cubeSprite.y = nY;
cubeSprite.z = 0;
for (var i:Number=0; i<nLength; ++i) {
var my_array:Array = images_vector[i];
var imageClass:Class = my_array[0] as Class;
var myVector3D:Vector3D = my_array[1] as Vector3D;
var rotation_array:Array = my_array[2] as Array;
var mySprite:Sprite = new Sprite();
var myBitmap:Bitmap = new Bitmap(new imageClass(0,0));
faces_vector.push(mySprite);
cubeSprite.addChild(mySprite);
mySprite.addChild(myBitmap);
myBitmap.x = - nUnit;
myBitmap.y = - nUnit;
mySprite.x = myVector3D.x;
mySprite.y = myVector3D.y;
mySprite.z = myVector3D.z;
if (rotation_array) {
mySprite[rotation_array[0]] = rotation_array[1];
}
}
cubeSprite.addEventListener(Event.ENTER_FRAME, rotateCube);
}
function rotateCube(eventObject:Event):void {
var nRotationX:Number = - (mouseY-nY) * nSensitivity;
var nRotationY:Number = (mouseX-nX) * nSensitivity;
rotateSprite(cubeSprite, nRotationX, nRotationY);
arrangeFaces();
}
function rotateSprite(mySprite:Sprite, nRotationX:Number, nRotationY:Number):void {
var myMatrix3D:Matrix3D = mySprite.transform.matrix3D;
myMatrix3D.appendTranslation(-nX, -nY, 0);
myMatrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
myMatrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
myMatrix3D.appendTranslation(nX, nY, 0);
}
function arrangeFaces():void {
var faces_array:Array = new Array();
var faceSprite:Sprite;
var nLastIndex:int = cubeSprite.numChildren - 1;
var nLength:Number;
var i:uint;
nLength = faces_vector.length;
for (i=0; i < nLength; ++i) {
faceSprite = faces_vector[i];
var nZ:Number = faceSprite.transform.getRelativeMatrix3D(this).position.z;
if (nZ > cubeSprite.z) {
faceSprite.visible = false;
} else {
faceSprite.visible = true;
faces_array.push({face:faceSprite, z:-nZ});
}
}
faces_array.sortOn("z", Array.NUMERIC);
nLength = faces_array.length;
for (i=0; i < nLength; ++i) {
faceSprite = faces_array[i].face;
cubeSprite.setChildIndex(faceSprite, nLastIndex);
}
}
----------------
¡¡
|
|
|
| SeeDa!! |
Åê¹ÆNo.41464 Åê¹ÆÆü»þ: 2009-2-12 0:34 |
¿¦¿Í   µï½»ÃÏ: Nagoya Åê¹Æ: 221
»ÈÍѴĶ: WinXP  Flash CS4  au:W33SA¶
|
ΩÊýÂΤÀ¤±¤Ç¤ÏÌÌÇò¤¯¤Ê¤¤¤«¤é¡Ä ¤ªÏФò²ó¤·¤Æ¤ß¤Þ¤·¤¿¡£  3D¤Î²óžÂΡʱßÁÝÂΡ©¡Ë¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤¹¤ë»î¤ß¤ÎÇÉÀ¸¤Ç¤¹¡£ ¤Þ¤À¤Þ¤À¸úΨ¤Î°¤¤¥¹¥¯¥ê¥×¥È¤Ç¤¹¤¬¡¢ÀÖ»úÉôʬ¤ò½¤Àµ¤¹¤ì¤Ð¿§¤ó¤Ê¤â¤Î¤ò²ó¤»¤Þ¤¹¡£¡ÊCS4¸ÂÄê..¡Ë // ¥á¥¤¥ó¥¿¥¤¥à¥é¥¤¥ó: ¥Õ¥ì¡¼¥à¥¢¥¯¥·¥ç¥ó
var nX:Number=stage.stageWidth/2;
var nY:Number=stage.stageHeight/2;
var nSensitivity:Number=0.2;
var nUnit:Number=100/2;
var lightV:Vector3D=new Vector3D(-200,150,0);
transform.perspectiveProjection.fieldOfView=55;
// ÃÇÌ̿ޤÎÉÁ²èPOINT¤ò»ØÄê¡Ê£²ÅÀ°Ê¾å¡Ë
var points:Array = new Array(
new Point(0, -110+50),
new Point(35, -86.8+50),
new Point(35, -110+50),
new Point(50.1, -110+50),
new Point(50.1, -86.8+50),
new Point(70.7, -70.7+50),
new Point(87, -49.9+50),
new Point(96.9, -25.7+50),
new Point(100, 0+50),
new Point(84.3, 0+50),
new Point(81.7, -21.6+50),
new Point(73.3, -42+50),
new Point(59.6, -59.6+50),
new Point(42.3, -73.2+50),
new Point(21.7, -81.7+50),
new Point(0, -84.3+50)
);
// ²óžÂΤÎʬ³ä¿ô¡Ê3°Ê¾å¡Ë
var splitNum:uint=24;
var radian:Number=Math.PI*2/splitNum;
var owan:Sprite = new Sprite();
owan.x=stage.stageWidth/2;
owan.y=stage.stageHeight/2;
owan.z=0;
// splitNum¤Çʬ³ä¤·¤¿²óžÂΤòÉÁ²è¤¹¤ë
var faces:Array = new Array();
for (var s:uint = 0; s < splitNum; s++) {
var rotationAngle:Number=360/splitNum*s;
var rotationRadian:Number=radian*s;
for (var i:uint = 0; i < points.length-1; i++) {
var trapezoid:MovieClip=drawTrapezoid(points[i],points[i+1],i);
setRotate(trapezoid, rotationRadian);
faces.push(trapezoid);
owan.addChild(trapezoid);
}
}
addChild(owan);
owan.addEventListener(Event.ENTER_FRAME, rotateObject);
// ¿¼ÅÙÄ´Àá¤È¤¤¤¤²Ã¸º¤Ê±¢±ÆÉ½¸½
// ¸«¤¨¤Ê¤¤¥¹¥×¥é¥¤¥È¤âÉÁ²è¤·¤Á¤ã¤Ã¤Æ¤Þ¤¹
function arrangeFaces():void {
for (var i:uint = 0; i < faces.length; i++) {
var nX:Number=faces[i].transform.getRelativeMatrix3D(root).position.x;
var nY:Number=faces[i].transform.getRelativeMatrix3D(root).position.y;
var nZ:Number=faces[i].transform.getRelativeMatrix3D(root).position.z;
faces[i].nx=nX;
faces[i].ny=nY;
faces[i].nz=nZ;
owan.removeChild(faces[i]);
}
faces.sortOn("nz", Array.NUMERIC | Array.DESCENDING);
for (i = 0; i < faces.length; i++) {
owan.addChild(faces[i]);
// ¸÷¸»¤È¤Î³ÑÅÙº¹¤òÄ´¤Ù¤ë
var faseV:Vector3D=new Vector3D(faces[i].nx,faces[i].ny,faces[i].nz);
var vAngle:Number=Vector3D.angleBetween(lightV,faseV);
var offset:Number = (vAngle/Math.PI * 512 - 256) * 0.8;
var color:ColorTransform=new ColorTransform(1,1,1,1,offset,offset,offset,0);
faces[i].transform.colorTransform=color;
}
}
// ²óžÂΡÊowan¡Ë¤ËÇÛÃÖ¤¹¤ë¥¹¥×¥é¥¤¥È¤Î²óž°ÌÃÖÄ´Àá
function setRotate(sprite:Sprite, myRadian:Number) {
var distance:Number=Math.sqrt(Math.pow(sprite.x,2)+Math.pow(sprite.z,2));
sprite.z=distance*Math.sin(myRadian);
sprite.x=distance*Math.cos(myRadian);
sprite.rotationY=- myRadian/Math.PI*180-90;
}
// Âæ·Á¤òÉÁ²è¤¹¤ë
function drawTrapezoid(pFrom:Point, pTo:Point, nCount:uint=0):MovieClip {
var myColor:Number=nCount>7?0xff0000:0x000000;
var _mc:MovieClip = new MovieClip();
var apexes:Array=getTrapezoidApexes(pFrom,pTo);
var nHeight:Number=Math.sqrt(Math.pow(apexes[0].y-apexes[1].y,2)+Math.pow(pFrom.y-pTo.y,2));
_mc.graphics.beginFill(myColor, 1);
_mc.graphics.moveTo(-apexes[0].x, -nHeight/2);
_mc.graphics.lineTo( apexes[0].x, -nHeight/2);
_mc.graphics.lineTo( apexes[1].x, nHeight/2);
_mc.graphics.lineTo(-apexes[1].x, nHeight/2);
_mc.graphics.lineTo(-apexes[0].x, -nHeight/2);
_mc.graphics.endFill();
_mc.rotationX=getSlantAngle(new Point(apexes[1].y,pTo.y),new Point(apexes[0].y,pFrom.y))-90;
_mc.y = (pTo.y+pFrom.y)/2;
_mc.z = -(apexes[1].y+apexes[0].y)/2;
return _mc;
}
// ¾åÌ̤«¤é¸«¤¿Âæ·Á¤ÎĺÅÀºÂɸ¤òµá¤á¤ë
function getTrapezoidApexes(upper:Point, bottom:Point):Array {
var apexes:Array = new Array();
var upperX:Number=upper.x*Math.sin(radian/2);
var upperY:Number=upper.x*Math.cos(radian/2);
apexes.push(new Point(upperX,upperY));
var bottomX:Number=bottom.x*Math.sin(radian/2);
var bottomY:Number=bottom.x*Math.cos(radian/2);
apexes.push(new Point(bottomX,bottomY));
return apexes;
}
// ·¹¼Ð³Ñ¤òµá¤á¤ë
function getSlantAngle(pFrom:Point, pTo:Point):Number {
var dx:Number=pFrom.x-pTo.x;
var dy:Number=pFrom.y-pTo.y;
return Math.atan2(dy, dx) * 180 / Math.PI;
}
// ¥Þ¥¦¥¹¤ËÈ¿±þ¤·¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ò²óž¤µ¤»¤ë
function rotateObject(eventObject:Event):void {
var nRotationX:Number = (mouseY-nY) * nSensitivity;
var nRotationY:Number = (mouseX-nX) * nSensitivity;
owan.transform.matrix3D.appendTranslation(- nX,- nY,0);
owan.transform.matrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
owan.transform.matrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
owan.transform.matrix3D.appendTranslation(nX,nY,0);
arrangeFaces();
}
¥¹¥¯¥ê¥×¥È¤Î½¤ÀµÂç´¿·Þ¤·¤Þ¤¹ 
|
|
|
| SeeDa!! |
Åê¹ÆNo.41469 Åê¹ÆÆü»þ: 2009-2-12 21:01 |
¿¦¿Í   µï½»ÃÏ: Nagoya Åê¹Æ: 221
»ÈÍѴĶ: WinXP  Flash CS4  au:W33SA¶
|
Re: ΩÊýÂΤÀ¤±¤Ç¤ÏÌÌÇò¤¯¤Ê¤¤¤«¤é¡Ä ¤â²ó¤·¤Æ¤ß¤Þ¤·¤¿ ²¡¤·½Ð¤·¡ÊÁݰúÂΡˤϲóžÂΤËÈæ¤Ù¤Æ´Êñ¤À¤È»×¤Ã¤Æ¤¤¤¿¤ó¤Ç¤¹¤¬¡¢Î¢Ê֤俤â¤Î¤ò¤¤Á¤ó¤È¾Ã¤µ¤Ê¤¤¤ÈÀµ¤·¤¯É½¼¨¤µ¤ì¤Þ¤»¤ó¡£ ¤Ç¡¢·ë¶É½ÐÍè¤Ê¤«¤Ã¤¿¤«¤é¡¢¡¢¡¢£Æ¤òÉÁ¤¤¤Æ¤¤¤ëÀµÌ̤È΢Ì̤οôÃͤòµ¶Áõ¡Êx100¡Ë¤·¤Æ¸íËâ²½¤·¤Æ¤Þ¤¹  ¡Ê²¼µ¥¹¥¯¥ê¥×¥È¤Ï"F"¤Ç¤¹¡Ë ÌîÃæ¤µ¤ó¤Î¤´Ä󼨤¤¤¿¤À¤¤¤¿¥¹¥¯¥ê¥×¥È¤Î¤¦¤Á °úÍÑ¡§ Fumio¤µ¤ó¤Ï½ñ¤¤Þ¤·¤¿¡§
var images_vector:Vector.<Array> = new Vector.<Array>();
var faces_vector:Vector.<Sprite> = new Vector.<Sprite>();
¤ä var imageClass:Class = my_array[0] as Class;
var myVector3D:Vector3D = my_array[1] as Vector3D;
var rotation_array:Array = my_array[2] as Array;
¤¢¤¿¤ê¤ÎÃ챤¬¤Ê¤¯¤Æ¥Á¥ó¥×¥ó¥«¥ó¥×¥ó¤Ç¤¹¤¬¡¢¾è¤ê±Û¤¨¤Ê¤¤¤È¤¤¤±¤Ê¤¤Êɤʤó¤À¤í¤¦¤Ê¤¡¡Ä // ¥á¥¤¥ó¥¿¥¤¥à¥é¥¤¥ó: ¥Õ¥ì¡¼¥à¥¢¥¯¥·¥ç¥ó
var point_array:Array = new Array(
new Point(-47,-70.8),
new Point(-15.8,-70.8),
new Point(47,-70.8),
new Point(47,-45),
new Point(-15.8,-45),
new Point(-15.8,-14.6),
new Point(25.9,-14.6),
new Point(25.9,11.7),
new Point(-15.8,11.7),
new Point(-15.8,70.7),
new Point(-47,70.7),
new Point(-47,11.7),
new Point(-47,-14.6),
new Point(-47,-45)
);
var nDepth:Number=90;
var pNum:uint=point_array.length;
var nX:Number = stage.stageWidth/2;
var nY:Number = stage.stageHeight/2;
var i:uint;
var faces:Array = new Array();
var nSensitivity:Number=0.1;
var lightV:Vector3D=new Vector3D(-200,150,0);
// ½ñ¤½Ð¤¹¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¹¥Æ¡¼¥¸¤Î¥»¥ó¥¿¡¼¤ËÇÛÃÖ
var myObject:Sprite = new Sprite();
myObject.x = nX;
myObject.y = nY;
myObject.z = 0;
// ÀµÌ̤«¤é¸«¤¿¿Þ¡Ê¾åÌÌ¡¿²¼Ì̡ˤòÉÁ²è
var faceName:String = 'topFace';
var topFace:MovieClip = drawFace(faceName);
topFace.z = -nDepth/2;
faces.push(topFace);
myObject.addChild(topFace);
faceName = 'bottomFace';
var bottomFace:MovieClip = drawFace(faceName);
bottomFace.z = nDepth/2;
faces.push(bottomFace);
myObject.addChild(bottomFace);
// ¦Ì̡ʱü¹Ô¤¡Ë¤òÉÁ²è
for (i = 0; i < pNum; i++) {
var pFrom:Point = point_array[i];
var pTo:Point = i == pNum-1 ? point_array[0] : point_array[i+1];
var mySprite:MovieClip = drawDepth(pFrom,pTo);
faces.push(mySprite);
myObject.addChild(mySprite);
}
// ¿¼ÅÙÄ´Àá
var faceNum:uint = faces.length;
addChild(myObject);
arrangeFaces();
myObject.addEventListener(Event.ENTER_FRAME, rotateObject);
// ¤¤¤¤²Ã¸º¤Ê¿¼ÅÙÄ´Àá¤È¤¤¤¤²Ã¸º¤Ê±¢±ÆÉ½¸½
function arrangeFaces():void {
var tempPoint:MovieClip;
for (i = 0; i < faceNum; i++) {
var nX:Number=faces[i].transform.getRelativeMatrix3D(root).position.x;
var nY:Number=faces[i].transform.getRelativeMatrix3D(root).position.y;
var nZ:Number=faces[i].transform.getRelativeMatrix3D(root).position.z;
var faceName:String = faces[i].name;
if (faceName == 'topFace' || faceName == 'bottomFace') nZ *= 100;
faces[i].nx=nX;
faces[i].ny=nY;
faces[i].nz=nZ;
myObject.removeChild(faces[i]);
}
var frontFlg:Boolean = true;
faces.sortOn("nz", Array.NUMERIC | Array.DESCENDING);
for (i = 0; i < faces.length; i++) {
myObject.addChild(faces[i]);
faces[i].visible = true;
// ¸÷¸»¤È¤Î³ÑÅÙº¹¤òÄ´¤Ù¤ë
var faseV:Vector3D=new Vector3D(faces[i].nx,faces[i].ny,faces[i].nz);
var vAngle:Number=Vector3D.angleBetween(lightV,faseV);
var offset:Number = (vAngle/Math.PI * 512 - 300);
var color:ColorTransform=new ColorTransform(1,1,1,1,offset,offset,offset,0);
faces[i].transform.colorTransform=color;
}
}
// ÀµÌ̤«¤é¸«¤¿¿Þ¡Ê¾åÌÌ¡¿²¼Ì̡ˤòÉÁ²è
function drawFace(faceName:String):MovieClip {
var mySprite:MovieClip = new MovieClip();
mySprite.graphics.beginFill(0xff0000);
mySprite.graphics.moveTo(point_array[0].x, point_array[0].y);
for (i=1; i < pNum; i++) {
mySprite.graphics.lineTo(point_array[i].x, point_array[i].y);
}
mySprite.graphics.lineTo(point_array[0].x, point_array[0].y);
mySprite.graphics.endFill();
mySprite.name = faceName;
return mySprite;
}
// ±ü¹Ô¤¤òÉÁ²è
function drawDepth(pFrom:Point, pTo:Point):MovieClip {
var mySprite:MovieClip = new MovieClip();
var nCenter:Point = new Point((pFrom.x+pTo.x)/2, (pFrom.y+pTo.y)/2);
var nDistance:Number = Point.distance(pFrom, pTo);
var nRadian:Number = Math.atan2(pTo.y-pFrom.y,pTo.x-pFrom.x);
var nDegree:Number = nRadian/Math.PI*180;
mySprite.graphics.beginFill(0x999999);
mySprite.graphics.moveTo(-nDistance/2, -nDepth/2);
mySprite.graphics.lineTo(nDistance/2, -nDepth/2);
mySprite.graphics.lineTo(nDistance/2, nDepth/2);
mySprite.graphics.lineTo(-nDistance/2, nDepth/2);
mySprite.graphics.lineTo(-nDistance/2, -nDepth/2);
mySprite.graphics.endFill();
mySprite.rotationX = 90;
mySprite.rotationZ = nDegree;
mySprite.x = nCenter.x;
mySprite.y = nCenter.y;
return mySprite;
}
// ¥Þ¥¦¥¹¤ËÈ¿±þ¤·¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ò²óž¤µ¤»¤ë
function rotateObject(eventObject:Event):void {
var nRotationX:Number = (mouseY-nY) * nSensitivity;
var nRotationY:Number = -(mouseX-nX) * nSensitivity;
myObject.transform.matrix3D.appendTranslation(- nX,- nY,0);
myObject.transform.matrix3D.appendRotation(nRotationY, Vector3D.Y_AXIS);
myObject.transform.matrix3D.appendRotation(nRotationX, Vector3D.X_AXIS);
myObject.transform.matrix3D.appendTranslation(nX,nY,0);
arrangeFaces();
}
|
|
|
| SeeDa!! |
Åê¹ÆNo.41477 Åê¹ÆÆü»þ: 2009-2-16 6:00 |
¿¦¿Í   µï½»ÃÏ: Nagoya Åê¹Æ: 221
»ÈÍѴĶ: WinXP  Flash CS4  au:W33SA¶
|
Re: ΩÊýÂΤÀ¤±¤Ç¤ÏÌÌÇò¤¯¤Ê¤¤¤«¤é¡Ä µåÂΤò²ó¤·¤Æ¤ß¤¿  ¤³¤ì¤Þ¤Ç°¡Î®¤Ç¥×¥ê¥ß¥Æ¥£¥Ö¤â¤É¤¤òºîÀ®¤·¤Æ¤¤Þ¤·¤¿¤¬¡¢UV¥Þ¥Ã¥Ô¥ó¥°¤ò»È¤¤¤¿¤«¤Ã¤¿¤Î¤ÇËÜή¤ËÄ©À路¤Æ¤ß¤Þ¤·¤¿¡£ µåÂΤξå¤Ç¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥Ý¥ê¥´¥ó¥é¥¤¥ó¤Îɽ¼¨¡¿Èóɽ¼¨¤òÀÚ¤êÂØ¤¨¤é¤ì¤Þ¤¹¡£ ¥Õ¥ì¡¼¥à¥¢¥¯¥·¥ç¥ó µåÂΤòÇÛÃÖ¤·¤Æ²óž¤µ¤»¤ë var nX:Number = stage.stageWidth / 2;
var nY:Number = stage.stageHeight / 2;
var nSensitivity:Number = 0.1;
var myBall:DrawBall = new DrawBall(150, 30);
myBall.x = stage.stageWidth/2;
myBall.y = stage.stageHeight/2;
addChild(myBall);
addEventListener(Event.ENTER_FRAME, rotate);
function rotate(eventObject:Event):void{
var nRotationX:Number = (mouseY-nX) * nSensitivity;
var nRotationY:Number = -(mouseX-nY) * nSensitivity;
myBall.myMatrix.appendRotation(nRotationX, Vector3D.X_AXIS);
myBall.myMatrix.appendRotation(nRotationY, Vector3D.Y_AXIS);
myBall.rendar();
}
addEventListener(MouseEvent.CLICK, frameView);
function frameView(eventObject:MouseEvent):void{
myBall.wireFlg*=-1;
}
¥¯¥é¥¹ µåÂΤòÉÁ¤¯ package {
import flash.display.*;
import flash.geom.*;
public class DrawBall extends Sprite {
private var radius:Number;
private var split:uint;
private var vApexes :Vector.<Number> = new Vector.<Number>();
private var vFlatApexes:Vector.<Number> = new Vector.<Number>();
private var vIndices :Vector.<int> = new Vector.<int>();
private var vUVT :Vector.<Number> = new Vector.<Number>();
private var myBitmap :mappingdata = new mappingdata(0,0);
private var mySpace :Sprite = new Sprite();
public var myMatrix :Matrix3D;
public var wireFlg :int = 1;
public function DrawBall(radius:Number=100, split:uint=10):void {
myMatrix = new Matrix3D();
myMatrix.appendRotation(60,Vector3D.X_AXIS);
myMatrix.appendRotation(20,Vector3D.Y_AXIS);
addChild(mySpace);
setApexes(radius, split);
setIndices(split);
rendar();
}
private function setApexes(nRadius:Number, nSplit:uint):void {
for (var v:uint = 0; v <= nSplit; v++) {
if (v % 2 == 0) {
var radianV:Number = Math.PI * v / nSplit;
var nDist :Number = nRadius * Math.sin(radianV);
var nY :Number = nRadius * Math.cos(radianV);
for (var h:uint = 0; h <= nSplit; h++) {
var radianH:Number = Math.PI * 2 * h / nSplit;
var nX:Number = nDist * Math.cos(radianH);
var nZ:Number = nDist * Math.sin(radianH);
vApexes.push(nX, nY, nZ);
vUVT.push(h/nSplit,v/nSplit,0);
}
}
}
}
private function setIndices(nSplit:uint) {
for (var v:uint = 0; v < nSplit; v++) {
for (var h:uint = 0; h < nSplit; h++) {
var nP = (nSplit+1) * v + h;
var i0:uint = nP;
var i1:uint = nP+1;
var i2:uint = nP+nSplit+1;
var i3:uint = nP+nSplit+2;
vIndices.push(i0,i1,i2, i3,i2,i1);
}
}
}
public function rendar() {
Utils3D.projectVectors(myMatrix, vApexes, vFlatApexes, vUVT);
mySpace.graphics.clear();
mySpace.graphics.beginBitmapFill(myBitmap);
if (wireFlg == 1) {
mySpace.graphics.lineStyle(1,0x000000);
}
mySpace.graphics.drawTriangles(vFlatApexes, vIndices, vUVT, TriangleCulling.POSITIVE);
mySpace.graphics.endFill();
}
}
}
|
|
|
|
 |